A software system may contain any type of application business logic and may be recursively divided into multiple microservices. The division of the business implemented logic may be performed regardless of the manner how the split of logic is performed. The logic may be split into microservices that communicate with each other during execution of the application business logic and serving client requests. The communication between the microservices may be performed through application programming interface (API) calling methods at any applicable granular levels as a communication between the split-up services. Additionally, communication between the microservices may be handled through event publishing as an alternative communication.
The micro applications may be organized in complex distributed architectures, where dozens of dependencies between the services exist. If one microservice becomes latent during a user request, then the entire user request can be blocked. It can also cause resources to become saturated in seconds and can result in cascading failures.